/**
 * @file pc_main_fsm.c
 * @version 1.0
 * @date December 2023 
 * @author WSH
 *
 * @brief
 *  The present code is solely used for Parachute Controller.
 * @details
 * @note
 *
 * @Copyright (c) 2023 WSH
 */
#include "pc_main_fsm.h"

//主状态机

typedef enum {
    STATE_INIT,
    STATE_IDLE,
    STATE_RUNNING,
    STATE_ERROR
} State;

/**
 * @enum PCMAIN_FSM
 * @brief 伞控主状态机状态.
 *
 * 伞控主状态机的所有状态.
 */
 typedef enum {
    PCMAIN_FSM_INIT = 0,   /**< 伞控初始状态. */
    PCMAIN_FSM_WAIT    ,   /**< 等待就绪状态. */
} PCMAIN_FSM;

/**
 * @enum PCMAIN_EVENT
 * @brief 伞控事件.
 *
 * 标记输出当前触发的事件.
 */
 typedef enum {
    PCMAIN_EVENT_NULL,     /**<   PCMAIN_EVENT NULL. */
    PCMAIN_EVENT_UNKOWN,   /**< 未知错误 */
} PCMAIN_EVENT;


/**
 * @struct pcmain_fsm
 * @brief This structure represents parachute controller main fsm.
 */
typedef struct{
    PCMAIN_FSM   status ; /**< 状态. */
    PCMAIN_EVENT event  ; /**< 事件. */
}pcmain_fsm_t;

static pcmain_fsm_t _pcmain_fsm ; /// 定义伞控变量

void pc_main_fsm_run(uint32_t ts_in) {
    switch (_pcmain_fsm.status) {
        case PCMAIN_FSM_INIT:
            // 处理初始化状态下的事件
            // 进行状态转移
            _pcmain_fsm.status = PCMAIN_FSM_WAIT;

            break;
        case PCMAIN_FSM_WAIT:
            // 等待下一步

            break;
        default:
            // 处理未知状态
            _pcmain_fsm.event = PCMAIN_EVENT_UNKOWN ;
            break;
    }
}
